<?php

namespace JLPay\Services\Trans\Common;

use JLPay\Services\BaseService;
use JLPay\Models\Trans\Common\CancelRequest;
use JLPay\Models\Trans\Common\CancelResponse;

/**
 * 撤销服务
 */
class CancelService extends BaseService
{
    /**
     * 获取API URL
     *
     * @param string $requestClass 请求类名
     * @param string|null $apiPath 接口路径
     * @return string 完整的API URL
     */
    public function getApiUrl(string $requestClass, ?string $apiPath = null): string
    {
        $baseUrl = $this->config->getUrl();
        
        if ($apiPath) {
            return $baseUrl . $apiPath;
        }
        
        // 优先使用API_URL（新方式）
        $apiUrl = constant($requestClass . '::API_URL');
        if ($apiUrl) {
            return $baseUrl . $apiUrl;
        }
        
        // 如果没有API_URL，尝试使用API_PREFIX + API_URI（旧方式）
        $apiPrefix = constant($requestClass . '::API_PREFIX');
        $apiUri = constant($requestClass . '::API_URI');
        if ($apiPrefix && $apiUri) {
            return $baseUrl . $apiPrefix . $apiUri;
        }
        
        // 如果都没有定义，使用默认路径
        return $baseUrl . "/open/trans";
    }

    /**
     * 撤销接口
     *
     * @param CancelRequest $request 撤销请求
     * @return CancelResponse 撤销响应结果
     */
    public function cancel(CancelRequest $request): CancelResponse
    {
        return $this->post($request, CancelResponse::class);
    }
} 